package demo2;

import java.util.*;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 石方旭
 * Date: 2022-07-05
 * Time: 16:17
 */
public class MyHashSet {


    public static void main(String[] args) {
        //hashSet要保证元素的唯一性必须重写hashcode方法和equals方法
        //LinkedHashSet底层是由哈希表和链表实现，哈希表保证元素唯一性，链表保证与存储顺序一致
        HashSet<Student> hashSet = new HashSet<>();
        Student s1 = new Student("张三",18);
        Student s2 = new Student("李四",18);
        Student s3 = new Student("王二麻子",28);
        Student s4 = new Student("李四",18);
        Student s5 = new Student("王二麻子",28);
        hashSet.add(s1);
        hashSet.add(s2);
        hashSet.add(s3);
        hashSet.add(s4);
        hashSet.add(s5);
        for (Student s : hashSet) {
            System.out.println(s);
        }
    }

    public static void main1(String[] args) {
        //哈希值是根据字符串数字或者地址计算出来的int类型的数字，不是地址
        //哈希值可以通过Object的hashcode方法算出
        //不同对象的哈希值是一般是不同的，但是可以通过重写hashcode方法让其相同
        //同一对象的哈希值是相同的
        System.out.println("hello".hashCode());
        System.out.println("world".hashCode());

    }

}
